#pragma once
#include <iostream>
using namespace std;
class Result
{
private:
	int maxPoint;
	int point;
	int maxGradeThreshold;
	int mediumGradeThreshold;
	int passGradeThreshold;
public:

	Result(void)
	{
		this->maxPoint = 0;
		this->point = 0;
		this->maxGradeThreshold = 0;
		this->mediumGradeThreshold = 0;
		this->passGradeThreshold = 0;
	}

	Result( int max, int point, int maxGrade, int mediumGrade, int passGrade)
	{
		this->maxPoint = max;
		this->point = point;
		this->maxGradeThreshold = maxGrade;
		this->mediumGradeThreshold = mediumGrade;
		this->passGradeThreshold = passGrade;
	}

	~Result(void)
	{
	}


	friend ostream& operator<<( ostream& out, Result& result)
	{
		out << "(maxPoint,point,maxGradeThreshold,mediumGradeThreshold,passGradeThreshold) = ";
		out << "(";
		out << result.maxPoint << ",";
		out << result.point << ",";
		out << result.maxGradeThreshold << ",";
		out << result.mediumGradeThreshold << ",";
		out << result.passGradeThreshold << ")" << endl;
		return out;
	}

	friend istream& operator>>(istream& in, Result& result)
	{
		char dummyChar;

		in >> dummyChar; // Skip '('
		in >> result.maxPoint;
		in >> dummyChar; // Skip ','
		in >> result.point;
		in >> dummyChar; // Skip ','
		in >> result.maxGradeThreshold;
		in >> dummyChar; // Skip ','
		in >> result.mediumGradeThreshold;
		in >> dummyChar; // Skip ','
		in >> result.passGradeThreshold;

		return in;
	}

#pragma region Getters
	int GetMaxPoint() { return this->maxPoint; }
	int GetPoint() { return this->point; }
	int GetMaxGradeThreshold() { return this->maxGradeThreshold; }
	int GetMediumGradeThreshold() { return this->mediumGradeThreshold; }
	int GetPassGradeThreshold() { return this->passGradeThreshold; }  
#pragma endregion


#pragma region Setters
	void SetMaxPoint( int point ) { this->maxPoint = point; }
	void SetPoint( int point ) { this->point = point; }
	void SetMaxGradeThreshold( int point ) { this->maxGradeThreshold = point; }
	void SetMediumGradeThreshold( int point ) { this->mediumGradeThreshold = point; }
	void SetPassGradeThreshold( int point ) { this->passGradeThreshold = point; }  
#pragma endregion

};

